package cn.buk.api.szkj.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class FlightInfo {

  /**
   * 出发机场
   */
  @JsonProperty(value = "BoardPoint")
  private String dport;

  @JsonProperty(value = "fromFly")
  private String dportName;

  /**
   * 到达机场
   */
  @JsonProperty(value = "OffPoint")
  private String aport;

  @JsonProperty(value = "toFly")
  private String aportName;

  /**
   * 航班号，不含航司代码
   */
  @JsonProperty(value = "FlightNo")
  private String flightNo;

  /**
   * 实际承运的航班号
   */
  @JsonProperty(value = "ShareaFltno")
  private String codeShareFlightNo;


  /**
   * 航司代码
   */
  @JsonProperty(value = "Carrier")
  private String carrier;

  /**
   * 实际承运航司代码
   */
  @JsonProperty(value = "CodeshareAirline")
  private String codeShareCarrier;

  /**
   * 航司名称
   */
  @JsonProperty(value = "company")
  private String carrierName;

  /**
   * 起飞日期
   */
  @JsonProperty(value = "DepartureDate")
  @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
  private Date ddate;

  /**
   * 星期几
   */
  @JsonProperty(value = "Week")
  private String dayOfWeek;

  /**
   * 到达日期
   */
  @JsonProperty(value = "ArrivalDate")
  @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
  private Date adate;

  /**
   * 出发时间
   */
  @JsonProperty(value = "DepartureTime")
  private String dtime;

  /**
   * 到达时间
   */
  @JsonProperty(value = "ArrivalTime")
  private String atime;

  /**
   * 出发航站楼
   */
  @JsonProperty(value = "BoardPointAT")
  private String dterm;

  /**
   * 到达航站楼
   */
  @JsonProperty(value = "OffPointAT")
  private String aterm;

  /**
   * 机型
   */
  @JsonProperty(value = "Aircraft")
  private String aircraft;

  /**
   * 餐食
   */
  @JsonProperty(value = "Meal")
  private String meal;

  /**
   * 电子客票标识
   */
  @JsonProperty(value = "ETicket")
  private String eticket;

  /**
   * 经停
   * 0-直飞
   * 1-经停
   */
  @JsonProperty(value = "ViaPort")
  private int stops;

  /**
   * 经济舱标准价
   */
  @JsonProperty(value = "YClassPrice")
  private double priceY;

  /**
   * 商务舱标准价
   */
  @JsonProperty(value = "CClassPrice")
  private double priceC;

  /**
   * 头等舱标准价
   */
  @JsonProperty(value = "FClassPrice")
  private double priceF;

  /**
   * 机场税
   */
  @JsonProperty(value = "AirportTax")
  private int airportTax;

  /**
   * 燃油附加费
   */
  @JsonProperty(value = "FuelSurTax")
  private int fuelSurcharge;

  /**
   * 燃油附加费（儿童）
   */
  @JsonProperty(value = "FuelSurTaxChd")
  private double fuelSurchargeChd;

  /**
   * 公里数
   */
  private int tpm;

  /**
   * 航班舱位信息
   */
  @JsonProperty(value = "ClassAry")
  private List<SubclassInfo> classInfos;


  public String getDport() {
    return dport;
  }

  public void setDport(String dport) {
    this.dport = dport;
  }

  public String getAport() {
    return aport;
  }

  public void setAport(String aport) {
    this.aport = aport;
  }

  public String getDportName() {
    return dportName;
  }

  public void setDportName(String dportName) {
    this.dportName = dportName;
  }

  public String getAportName() {
    return aportName;
  }

  public void setAportName(String aportName) {
    this.aportName = aportName;
  }

  public String getCarrierName() {
    return carrierName;
  }

  public void setCarrierName(String carrierName) {
    this.carrierName = carrierName;
  }

  public String getCarrier() {
    return carrier;
  }

  public void setCarrier(String carrier) {
    this.carrier = carrier;
  }

  public String getFlightNo() {
    return flightNo;
  }

  public void setFlightNo(String flightNo) {
    this.flightNo = flightNo;
  }

  public String getCodeShareCarrier() {
    return codeShareCarrier;
  }

  public void setCodeShareCarrier(String codeShareCarrier) {
    this.codeShareCarrier = codeShareCarrier;
  }

  public String getCodeShareFlightNo() {
    return codeShareFlightNo;
  }

  public void setCodeShareFlightNo(String codeShareFlightNo) {
    this.codeShareFlightNo = codeShareFlightNo;
  }

  public Date getDdate() {
    return ddate;
  }

  public void setDdate(Date ddate) {
    this.ddate = ddate;
  }

  public String getDayOfWeek() {
    return dayOfWeek;
  }

  public void setDayOfWeek(String dayOfWeek) {
    this.dayOfWeek = dayOfWeek;
  }

  public Date getAdate() {
    return adate;
  }

  public void setAdate(Date adate) {
    this.adate = adate;
  }

  public String getDtime() {
    return dtime;
  }

  public void setDtime(String dtime) {
    this.dtime = dtime;
  }

  public String getAtime() {
    return atime;
  }

  public void setAtime(String atime) {
    this.atime = atime;
  }

  public String getDterm() {
    return dterm;
  }

  public void setDterm(String dterm) {
    this.dterm = dterm;
  }

  public String getAterm() {
    return aterm;
  }

  public void setAterm(String aterm) {
    this.aterm = aterm;
  }

  public String getAircraft() {
    return aircraft;
  }

  public void setAircraft(String aircraft) {
    this.aircraft = aircraft;
  }

  public String getMeal() {
    return meal;
  }

  public void setMeal(String meal) {
    this.meal = meal;
  }

  public String getEticket() {
    return eticket;
  }

  public void setEticket(String eticket) {
    this.eticket = eticket;
  }

  public int getStops() {
    return stops;
  }

  public void setStops(int stops) {
    this.stops = stops;
  }

  public double getPriceY() {
    return priceY;
  }

  public void setPriceY(double priceY) {
    this.priceY = priceY;
  }

  public double getPriceC() {
    return priceC;
  }

  public void setPriceC(double priceC) {
    this.priceC = priceC;
  }

  public double getPriceF() {
    return priceF;
  }

  public void setPriceF(double priceF) {
    this.priceF = priceF;
  }

  public int getAirportTax() {
    return airportTax;
  }

  public void setAirportTax(int airportTax) {
    this.airportTax = airportTax;
  }

  public int getTpm() {
    return tpm;
  }

  public void setTpm(int tpm) {
    this.tpm = tpm;
  }

  public double getFuelSurchargeChd() {
    return fuelSurchargeChd;
  }

  public void setFuelSurchargeChd(double fuelSurchargeChd) {
    this.fuelSurchargeChd = fuelSurchargeChd;
  }

  public int getFuelSurcharge() {
    return fuelSurcharge;
  }

  public void setFuelSurcharge(int fuelSurcharge) {
    this.fuelSurcharge = fuelSurcharge;
  }

  public List<SubclassInfo> getClassInfos() {
    if (classInfos == null) {
      classInfos = new ArrayList<>();
    }
    return classInfos;
  }

  public void setClassInfos(List<SubclassInfo> classInfos) {
    this.classInfos = classInfos;
  }
}
